package com.vision.sales.cl.data;

import java.util.Date;

import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor.Path;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.data.shared.LabelProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.PropertyAccess;
import com.vision.core.cm.db.data.Company;
import com.vision.sales.cm.data.DebitMemoType;
import com.vision.sales.cm.data.TransactionStatus;
import com.vision.sales.cm.db.data.Customer;
import com.vision.sales.cm.db.data.DebitMemo;
import com.vision.sales.cm.db.data.SalesInvoice;

public interface DebitMemoProperties extends PropertyAccess<DebitMemo> {
	
	public static final DebitMemoProperties INSTANCE = GWT.create(DebitMemoProperties.class);
	
	@Path("id")
	ModelKeyProvider<DebitMemo> key();

	@Path("debitMemoNo")
	LabelProvider<DebitMemo> nameLabel();

	ValueProvider<DebitMemo, Long> id();
	
	ValueProvider<DebitMemo, Company> company();
	
	@Path("company.code")
	ValueProvider<DebitMemo, String> companyCode();
	
	ValueProvider<DebitMemo, Customer> customer();

	@Path("customer.code")
	ValueProvider<DebitMemo, String> customerCode();

	ValueProvider<DebitMemo, String> debitMemoNo();

	ValueProvider<DebitMemo, Date> date();

	ValueProvider<DebitMemo, DebitMemoType> type();

	ValueProvider<DebitMemo, Double> amount();

	ValueProvider<DebitMemo, SalesInvoice> salesInvoice();
	
	@Path("salesInvoice.invoiceNo")
	SalesInvoiceNoValueProvider<DebitMemo> salesInvoiceNo();
	
	ValueProvider<DebitMemo, String> remarks();
	
	ValueProvider<DebitMemo, TransactionStatus> status();

}